// pages/search/search.js

const db = wx.cloud.database();
let t = null;

Page({
    /**
     * 页面的初始数据
     */
    data: {
        search_input: '', // 延时响应的值
        _search_input: '', // 即时响应的值
        searchLog: [], // 用于储存搜索历史的数组
        searchList: [] //查询结果
    },

    clickLog(e) {
        const {
            name
        } = e.currentTarget.dataset;
        wx.navigateTo({
            url: `../classifyList/classifyList?text=${name}&from=search`,
        })
    },

    // 进入物品的详情页面
    toDetail(e) {
        const login = wx.getStorageSync('login');
        const {
            item
        } = e.currentTarget.dataset;
        // console.log(item)
        if (login) {
            wx.navigateTo({
                // 通过路径将数据传入
                url: `../detailPage/detailPage?info=${JSON.stringify(item)}`,
                // url:`../detailPage/detailPage?id=${item._id}`
            })
        } else {
            wx.switchTab({
                url: '../me/me',
                success: () => {
                    wx.showToast({
                        icon: 'none',
                        title: '请前往我的页面进行登录',
                    })
                }
            })
        }
    },

    // 实现在数据库查询是否有与搜索内容相匹配的功能
    getSearch(e) {
        this.setData({
            _search_input: e.detail.value
        })
        // console.log(e.detail.value)

        /* 实现防抖
        setTimeout(() => {
            console.log(e.detail.value)
        }, 3000)*/
        if (t) clearTimeout(t)
        t = setTimeout(() => {
            this.setData({
                search_input: e.detail.value
            })
            // console.log(e.detail.value)
            if (e.detail.value.trim().length > 0) {
                let searchLog = wx.getStorageSync('searchLog')
                if (searchLog) {
                    // 向数组末尾添加元素
                    // searchLog.push(e.detail.value)
                    // 向数组头部添加元素
                    searchLog.unshift(e.detail.value)
                    // wx.setStorageSync('searchLog', searchLog)
                } else {
                    searchLog = [e.detail.value]
                    // wx.setStorageSync('searchLog', searchLog)
                }
                wx.setStorageSync('searchLog', searchLog)
                this.setData({
                    searchLog
                })
            }
            
            db.collection('publish').where({
                name: db.RegExp({
                    regexp: e.detail.value,
                    options: 'i'
                })
            }).get({
                success: (res) => {
                    // console.log(res)
                    const {
                        data
                    } = res;
                    this.setData({
                        searchList: data
                    })
                }
            })
        }, 1500)
    },

    // 实现清空搜索框内容的功能
    deleteSearch() {
        this.setData({
            search_input: '',
            _search_input: '',
            searchList: []
        })
    },

    // 实现清空搜索历史的功能
    deleteSearchLog() {
        if (this.data.searchLog.length > 0) {
            wx.showModal({
                title: '提示',
                content: '确认要删除历史搜索记录吗？',
                success: (res) => {
                    if (res.confirm) {
                        wx.showToast({
                            title: '删除成功！',
                            icon: 'none'
                        })
                        this.setData({
                            searchLog: []
                        })
                        wx.removeStorageSync('searchLog')
                    }
                }
            })
        }
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad(options) {
        // 将搜索历史存入缓存中
        const searchLog = wx.getStorageSync('searchLog')
        this.setData({
            searchLog
        })
    },

    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady() {

    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow() {

    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide() {

    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload() {

    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh() {

    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom() {

    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage() {

    }
})